Nginx + LVS + KeepAlived实现高可用集群 您所在的位置:网站首页 阿里云 nginx 高可用 Nginx + LVS + KeepAlived实现高可用集群

Nginx + LVS + KeepAlived实现高可用集群

2023-09-27 11:40| 来源: 网络整理| 查看: 265

文章目录 一、名词解释1、高可用集群2、LVS3、Keepalived 二、搭建流程1、安装Docker2、安装Nginx3、安装Keepalived4、编写nginx_check.sh脚本

一、名词解释 1、高可用集群

对于中小型互联网公司,产品所承受的请求量还是比较低的,所以一般使用单节点Nginx + 多服务集群,这种方式就能够满足需求。

但是有些公司产品请求量是非常大的,此时单台Nginx可能没办法满足需求(如果单节点宕机,整个系统崩溃),此时就会考虑搭建Nginx高可用集群,通过LVS提供统一的访问入口,将请求负载均衡到我们的Nginx集群。

当某个Nginx节点宕机,Keepalived会进行监控,备用节点也会继续向外提供服务,确保程序还是正常运行,这就是高可用集群的魅力

2、LVS

LVS(Linux Vritual Server),大白话翻译过来就是一种负载均衡调度器,可以虚拟出来一个IP地址(公网IP),这样可以为我们的Nginx集群生成一个唯一的访问IP地址,该IP一般称之为VIP(Vriutal IP,虚拟IP),用户访问虚拟IP就可以实现Nginx集群的负载均衡功能 在这里插入图片描述

3、Keepalived

LVS只提供负载均衡功能,但是不能监控Nginx节点状态。如果某Nginx节点宕机,就没办法处理客户端发送过来的请求,造成服务不可用!

Keepalived 基于 VRRP 协议实现的保证集群高可用,主要功能是实现真机的故障隔离和负载均衡器间的失败切换,防止单点故障。

VRRP协议保证当主机的下一路由器出现故障时,由另外一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。 在这里插入图片描述

二、搭建流程

我使用的是两台阿里云ESC(2核2G服务器),IP地址分别为: 47.94.210.20:22(Master) 8.218.185.242:22(Backup) 大家可以在Windows本地安装虚拟机来代替。

1、安装Docker

两台ESC分别安装好Docker,参考该博客第1小节,即可顺利安装:https://blog.csdn.net/weixin_46594796/article/details/122750009

2、安装Nginx

两台ESC安装好Nginx,流程参考该博客第5小节(跳过配置证书流程): https://blog.csdn.net/weixin_46594796/article/details/130446464

按照第5小节执行完毕后,两台服务器执行下方命令,此时Nginx容器启动成功:

# 进入 /usr/local/nginx/html cd /usr/local/nginx/html # 创建nginx首页(两台服务器首页内容要区分,第二台服务内容可以为"Backup Nginx") echo "Master Nginx" > index.html # 启动容器 docker run \ --name nginx \ -p 443:443 -p 80:80 \ -v /usr/local/nginx/logs:/var/log/nginx \ -v /usr/local/nginx/html:/usr/share/nginx/html \ -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/nginx/conf.d:/etc/nginx/conf.d \ -v /usr/local/nginx/ssl:/etc/nginx/ssl/ \ --privileged=true -d --restart=always nginx 3、安装Keepalived

两台ESC分别安装Keepalived:

# 通过yum工具安装Keepalived yum install -y keepalived 操作主节点keepalived配置文件 # 编辑配置文件 vim /etc/keepalived/keepalived.conf

配置内容如下:

! Configuration File for keepalived # Keepalived 检测脚本 vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" # nginx宕机以后,自动开启shell interval 2 # 检测时间间隔 weight -20 # 如果条件成立,权重为-20 } vrrp_instance VI_1 { state MASTER # 主、备标识 interface eth0 # 网卡 virtual_router_id 51 # 主、备需要相同 mcast_src_ip 47.94.210.20 # 本机IP priority 100 # 优先级(主节点大) advert_int 1 # 心跳检测间隔 authentication { auth_type PASS auth_pass 1111 } # 将 chk_nginx 加入instance 配置块 track_script { chk_nginx } # 虚拟IP virtual_ipaddress { 192.168.200.16 } } 操作备节点keepalived配置文件 # 编辑配置文件 vim /etc/keepalived/keepalived.conf

配置内容如下:

! Configuration File for keepalived vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 mcast_src_ip 8.218.185.242 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.200.16 } } 4、编写nginx_check.sh脚本

两台ESC分别执行:

# 编辑脚本 vim /etc/keepalived/nginx_check.sh

内容如下:

counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then docker restart nginx sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl stop keepalived fi fi # 脚本文件授权 chmod 777 /etc/keepalived/nginx_check.sh


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有